fact(X) → if(zero(X), s(0), prod(X, fact(p(X))))
add(0, X) → X
add(s(X), Y) → s(add(X, Y))
prod(0, X) → 0
prod(s(X), Y) → add(Y, prod(X, Y))
if(true, X, Y) → X
if(false, X, Y) → Y
zero(0) → true
zero(s(X)) → false
p(s(X)) → X
↳ QTRS
↳ Overlay + Local Confluence
fact(X) → if(zero(X), s(0), prod(X, fact(p(X))))
add(0, X) → X
add(s(X), Y) → s(add(X, Y))
prod(0, X) → 0
prod(s(X), Y) → add(Y, prod(X, Y))
if(true, X, Y) → X
if(false, X, Y) → Y
zero(0) → true
zero(s(X)) → false
p(s(X)) → X
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
fact(X) → if(zero(X), s(0), prod(X, fact(p(X))))
add(0, X) → X
add(s(X), Y) → s(add(X, Y))
prod(0, X) → 0
prod(s(X), Y) → add(Y, prod(X, Y))
if(true, X, Y) → X
if(false, X, Y) → Y
zero(0) → true
zero(s(X)) → false
p(s(X)) → X
fact(x0)
add(0, x0)
add(s(x0), x1)
prod(0, x0)
prod(s(x0), x1)
if(true, x0, x1)
if(false, x0, x1)
zero(0)
zero(s(x0))
p(s(x0))
FACT(X) → PROD(X, fact(p(X)))
PROD(s(X), Y) → ADD(Y, prod(X, Y))
FACT(X) → P(X)
ADD(s(X), Y) → ADD(X, Y)
FACT(X) → FACT(p(X))
PROD(s(X), Y) → PROD(X, Y)
FACT(X) → ZERO(X)
FACT(X) → IF(zero(X), s(0), prod(X, fact(p(X))))
fact(X) → if(zero(X), s(0), prod(X, fact(p(X))))
add(0, X) → X
add(s(X), Y) → s(add(X, Y))
prod(0, X) → 0
prod(s(X), Y) → add(Y, prod(X, Y))
if(true, X, Y) → X
if(false, X, Y) → Y
zero(0) → true
zero(s(X)) → false
p(s(X)) → X
fact(x0)
add(0, x0)
add(s(x0), x1)
prod(0, x0)
prod(s(x0), x1)
if(true, x0, x1)
if(false, x0, x1)
zero(0)
zero(s(x0))
p(s(x0))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
FACT(X) → PROD(X, fact(p(X)))
PROD(s(X), Y) → ADD(Y, prod(X, Y))
FACT(X) → P(X)
ADD(s(X), Y) → ADD(X, Y)
FACT(X) → FACT(p(X))
PROD(s(X), Y) → PROD(X, Y)
FACT(X) → ZERO(X)
FACT(X) → IF(zero(X), s(0), prod(X, fact(p(X))))
fact(X) → if(zero(X), s(0), prod(X, fact(p(X))))
add(0, X) → X
add(s(X), Y) → s(add(X, Y))
prod(0, X) → 0
prod(s(X), Y) → add(Y, prod(X, Y))
if(true, X, Y) → X
if(false, X, Y) → Y
zero(0) → true
zero(s(X)) → false
p(s(X)) → X
fact(x0)
add(0, x0)
add(s(x0), x1)
prod(0, x0)
prod(s(x0), x1)
if(true, x0, x1)
if(false, x0, x1)
zero(0)
zero(s(x0))
p(s(x0))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
ADD(s(X), Y) → ADD(X, Y)
fact(X) → if(zero(X), s(0), prod(X, fact(p(X))))
add(0, X) → X
add(s(X), Y) → s(add(X, Y))
prod(0, X) → 0
prod(s(X), Y) → add(Y, prod(X, Y))
if(true, X, Y) → X
if(false, X, Y) → Y
zero(0) → true
zero(s(X)) → false
p(s(X)) → X
fact(x0)
add(0, x0)
add(s(x0), x1)
prod(0, x0)
prod(s(x0), x1)
if(true, x0, x1)
if(false, x0, x1)
zero(0)
zero(s(x0))
p(s(x0))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDP
ADD(s(X), Y) → ADD(X, Y)
fact(x0)
add(0, x0)
add(s(x0), x1)
prod(0, x0)
prod(s(x0), x1)
if(true, x0, x1)
if(false, x0, x1)
zero(0)
zero(s(x0))
p(s(x0))
fact(x0)
add(0, x0)
add(s(x0), x1)
prod(0, x0)
prod(s(x0), x1)
if(true, x0, x1)
if(false, x0, x1)
zero(0)
zero(s(x0))
p(s(x0))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
ADD(s(X), Y) → ADD(X, Y)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
PROD(s(X), Y) → PROD(X, Y)
fact(X) → if(zero(X), s(0), prod(X, fact(p(X))))
add(0, X) → X
add(s(X), Y) → s(add(X, Y))
prod(0, X) → 0
prod(s(X), Y) → add(Y, prod(X, Y))
if(true, X, Y) → X
if(false, X, Y) → Y
zero(0) → true
zero(s(X)) → false
p(s(X)) → X
fact(x0)
add(0, x0)
add(s(x0), x1)
prod(0, x0)
prod(s(x0), x1)
if(true, x0, x1)
if(false, x0, x1)
zero(0)
zero(s(x0))
p(s(x0))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
PROD(s(X), Y) → PROD(X, Y)
fact(x0)
add(0, x0)
add(s(x0), x1)
prod(0, x0)
prod(s(x0), x1)
if(true, x0, x1)
if(false, x0, x1)
zero(0)
zero(s(x0))
p(s(x0))
fact(x0)
add(0, x0)
add(s(x0), x1)
prod(0, x0)
prod(s(x0), x1)
if(true, x0, x1)
if(false, x0, x1)
zero(0)
zero(s(x0))
p(s(x0))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
PROD(s(X), Y) → PROD(X, Y)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
FACT(X) → FACT(p(X))
fact(X) → if(zero(X), s(0), prod(X, fact(p(X))))
add(0, X) → X
add(s(X), Y) → s(add(X, Y))
prod(0, X) → 0
prod(s(X), Y) → add(Y, prod(X, Y))
if(true, X, Y) → X
if(false, X, Y) → Y
zero(0) → true
zero(s(X)) → false
p(s(X)) → X
fact(x0)
add(0, x0)
add(s(x0), x1)
prod(0, x0)
prod(s(x0), x1)
if(true, x0, x1)
if(false, x0, x1)
zero(0)
zero(s(x0))
p(s(x0))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
FACT(X) → FACT(p(X))
p(s(X)) → X
fact(x0)
add(0, x0)
add(s(x0), x1)
prod(0, x0)
prod(s(x0), x1)
if(true, x0, x1)
if(false, x0, x1)
zero(0)
zero(s(x0))
p(s(x0))
fact(x0)
add(0, x0)
add(s(x0), x1)
prod(0, x0)
prod(s(x0), x1)
if(true, x0, x1)
if(false, x0, x1)
zero(0)
zero(s(x0))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ UsableRulesReductionPairsProof
FACT(X) → FACT(p(X))
p(s(X)) → X
p(s(x0))
Used ordering: POLO with Polynomial interpretation [25]:
p(s(X)) → X
POL(FACT(x1)) = 2·x1
POL(p(x1)) = x1
POL(s(x1)) = x1
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ Instantiation
FACT(X) → FACT(p(X))
p(s(x0))
FACT(p(z0)) → FACT(p(p(z0)))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
FACT(p(z0)) → FACT(p(p(z0)))
p(s(x0))
FACT(p(p(z0))) → FACT(p(p(p(z0))))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ QReductionProof
FACT(p(p(z0))) → FACT(p(p(p(z0))))
p(s(x0))
p(s(x0))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonTerminationProof
FACT(p(p(z0))) → FACT(p(p(p(z0))))
FACT(p(p(z0))) → FACT(p(p(p(z0))))